/*
 * Copyright (C) 2008, EGT Consultores, C.A.
 *
 * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los terminos
 * de la licencia "GNU General Public License" publicada por la Fundacion "Free Software Foundation".
 *
 * Este programa se distribuye con la esperanza de que pueda ser util, pero SIN NINGUNA GARANTIA;
 * vea la licencia "GNU General Public License" para obtener mas informacion.
 *
 */
package com.egt.web.configuracion.basica;

import com.egt.data.general.xdp3.OpcionMenuCachedRowSetDataProvider3;
import com.egt.data.general.xdp2.AplicacionCachedRowSetDataProvider2;
import com.egt.data.general.xdp2.PaginaCachedRowSetDataProvider2;
import com.egt.base.constants.CBM2;
import com.egt.base.constants.URX2;
import com.egt.base.util.BundleWebui;
import com.egt.core.aplicacion.Bitacora;
import com.egt.core.aplicacion.ExcepcionAplicacion;
import com.egt.core.aplicacion.FiltroBusqueda;
import com.egt.core.aplicacion.web.ContextoAplicacionEstandar;
import com.egt.core.aplicacion.web.ContextoPeticionEstandar;
import com.egt.core.aplicacion.web.ContextoSesionEstandar;
import com.egt.core.aplicacion.web.GestorBusquedaReferencia;
import com.egt.core.aplicacion.web.GestorPaginaActualizacion;
import com.egt.core.aplicacion.web.GestorPaginaActualizacionConArbol;
import com.egt.core.aplicacion.web.GestorPaginaActualizacionConTabla;
import com.egt.core.aplicacion.web.PaginaActualizacion;
import com.egt.core.aplicacion.web.PaginaActualizacionConAccionMultiple;
import com.egt.core.aplicacion.web.PaginaActualizacionConEdicionMultiple;
import com.egt.core.aplicacion.web.PaginaConsultaConArbol;
import com.egt.core.aplicacion.web.PaginaConsultaConFiltro;
import com.egt.core.aplicacion.web.PaginaConsultaConMaestro;
import com.egt.core.aplicacion.web.PaginaConsultaConTabla;
import com.egt.core.aplicacion.web.RowProcessor;
import com.egt.core.db.xdp.RecursoCachedRowSetDataProvider;
import com.egt.core.enums.EnumColumnaEtiqueta;
import com.egt.core.enums.EnumOpcionZumNodo;
import com.egt.core.jsf.JSF;
import com.egt.core.util.STP;
import com.egt.core.util.Utils;
import com.sun.rave.faces.converter.SqlTimestampConverter;
import com.sun.data.provider.RowKey;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import com.sun.webui.jsf.component.Anchor;
import com.sun.webui.jsf.component.Body;
import com.sun.webui.jsf.component.Breadcrumbs;
import com.sun.webui.jsf.component.Button;
import com.sun.webui.jsf.component.Calendar;
import com.sun.webui.jsf.component.Checkbox;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.Form;
import com.sun.webui.jsf.component.Head;
import com.sun.webui.jsf.component.HelpInline;
import com.sun.webui.jsf.component.Html;
import com.sun.webui.jsf.component.ImageComponent;
import com.sun.webui.jsf.component.ImageHyperlink;
import com.sun.webui.jsf.component.Label;
import com.sun.webui.jsf.component.Link;
import com.sun.webui.jsf.component.Message;
import com.sun.webui.jsf.component.Page;
import com.sun.webui.jsf.component.Script;
import com.sun.webui.jsf.component.StaticText;
import com.sun.webui.jsf.component.Table;
import com.sun.webui.jsf.component.TableColumn;
import com.sun.webui.jsf.component.TableRowGroup;
import com.sun.webui.jsf.component.TextArea;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.component.Tree;
import com.sun.webui.jsf.component.Upload;
import com.sun.webui.jsf.model.Option;
import java.io.File;
import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.faces.application.NavigationHandler;
import javax.faces.component.UIComponent;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.context.FacesContext;
import javax.faces.convert.IntegerConverter;
import javax.faces.convert.LongConverter;
import javax.faces.convert.NumberConverter;
import javax.faces.event.ValueChangeEvent;
import javax.faces.validator.DoubleRangeValidator;
import javax.faces.validator.LengthValidator;
import javax.faces.validator.LongRangeValidator;
import javax.faces.validator.ValidatorException;

public class OpcionMenu3 extends AbstractPageBean
        implements PaginaActualizacionConAccionMultiple, PaginaActualizacionConEdicionMultiple, PaginaConsultaConArbol {

    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
    private void _init() throws Exception {
        opcionMenuDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.opcionMenuRowSet}"));
        aplicacionReferenceDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.aplicacionReferenceRowSet}"));
        paginaReferenceDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.paginaReferenceRowSet}"));
        opcionMenuReferenceDataProvider.setCachedRowSet((javax.sql.rowset.CachedRowSet) getValue("#{SessionBean1.opcionMenuReferenceRowSet}"));
    }

    private Form form1 = new Form();

    @Override
    public Form getForm1() {
        return form1;
    }

    public void setForm1(Form component) {
        this.form1 = component;
    }

    private Breadcrumbs breadcrumbs1 = new Breadcrumbs();

    @Override
    public Breadcrumbs getBreadcrumbs1() {
        return breadcrumbs1;
    }

    public void setBreadcrumbs1(Breadcrumbs component) {
        this.breadcrumbs1 = component;
    }

    private Tree tree1 = new Tree();

    @Override
    public Tree getTree1() {
        return tree1;
    }

    public void setTree1(Tree t) {
        this.tree1 = t;
    }

    private Button botonAplicarZum1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonAplicarZum1() {
        return botonAplicarZum1;
    }

    public void setBotonAplicarZum1(Button b) {
        this.botonAplicarZum1 = b;
    }

    private Label etiquetaListaOpcionZum1 = new com.egt.core.jsf.component.Etiqueta();

    public Label getEtiquetaListaOpcionZum1() {
        return etiquetaListaOpcionZum1;
    }

    public void setEtiquetaListaOpcionZum1(Label l) {
        this.etiquetaListaOpcionZum1 = l;
    }

    private Button botonQuitarZum1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonQuitarZum1() {
        return botonQuitarZum1;
    }

    public void setBotonQuitarZum1(Button b) {
        this.botonQuitarZum1 = b;
    }

    private DropDown listaOpcionZum1 = new com.egt.core.jsf.component.ListaDesplegable();

    @Override
    public DropDown getListaOpcionZum1() {
        return listaOpcionZum1;
    }

    public void setListaOpcionZum1(DropDown dd) {
        this.listaOpcionZum1 = dd;
    }

    private IntegerConverter converterListaOpcionZum1 = new IntegerConverter();
  
    public IntegerConverter getConverterListaOpcionZum1() {
        return converterListaOpcionZum1;
    }
  
    public void setConverterListaOpcionZum1(IntegerConverter ic) {
        this.converterListaOpcionZum1 = ic;
    }
  
    private Button botonAgregar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonAgregar1() {
        return botonAgregar1;
    }

    public void setBotonAgregar1(Button component) {
        this.botonAgregar1 = component;
    }

    private DropDown listaFuncionEdicion1 = new com.egt.core.jsf.component.ListaDesplegable();

    @Override
    public DropDown getListaFuncionEdicion1() {
        return listaFuncionEdicion1;
    }

    public void setListaFuncionEdicion1(DropDown component) {
        this.listaFuncionEdicion1 = component;
    }

    private LongConverter converterListaFuncionEdicion1 = new LongConverter();
  
    public LongConverter getConverterListaFuncionEdicion1() {
        return converterListaFuncionEdicion1;
    } 
  
    public void setConverterListaFuncionEdicion1(LongConverter component) {
        this.converterListaFuncionEdicion1 = component;
    }
  
    private Button botonEditar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonEditar1() {
        return botonEditar1;
    }

    public void setBotonEditar1(Button component) {
        this.botonEditar1 = component;
    }

    private Button botonDeshacer1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonDeshacer1() {
        return botonDeshacer1;
    }

    public void setBotonDeshacer1(Button component) {
        this.botonDeshacer1 = component;
    }

    private Button botonEliminar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonEliminar1() {
        return botonEliminar1;
    }

    public void setBotonEliminar1(Button component) {
        this.botonEliminar1 = component;
    }

    private Button botonAplicar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonAplicar1() {
        return botonAplicar1;
    }

    public void setBotonAplicar1(Button component) {
        this.botonAplicar1 = component;
    }

    private Button botonConfirmar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonConfirmar1() {
        return botonConfirmar1;
    }

    public void setBotonConfirmar1(Button component) {
        this.botonConfirmar1 = component;
    }

    private Button botonDescartar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonDescartar1() {
        return botonDescartar1;
    }

    public void setBotonDescartar1(Button component) {
        this.botonDescartar1 = component;
    }

    private DropDown listaFuncionAccion1 = new com.egt.core.jsf.component.ListaDesplegable();

    @Override
    public DropDown getListaFuncionAccion1() {
        return listaFuncionAccion1;
    }

    public void setListaFuncionAccion1(DropDown component) {
        this.listaFuncionAccion1 = component;
    }

    private LongConverter converterListaFuncionAccion1 = new LongConverter();
  
    public LongConverter getConverterListaFuncionAccion1() {
        return converterListaFuncionAccion1;
    } 
  
    public void setConverterListaFuncionAccion1(LongConverter component) {
        this.converterListaFuncionAccion1 = component;
    }
  
    private Button botonProcesar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonProcesar1() {
        return botonProcesar1;
    }

    public void setBotonProcesar1(Button component) {
        this.botonProcesar1 = component;
    }

    private Button botonRefrescar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonRefrescar1() {
        return botonRefrescar1;
    }

    public void setBotonRefrescar1(Button component) {
        this.botonRefrescar1 = component;
    }

    private Button botonReconsultar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonReconsultar1() {
        return botonReconsultar1;
    }

    public void setBotonReconsultar1(Button component) {
        this.botonReconsultar1 = component;
    }

    private Button botonRetornar1 = new com.egt.core.jsf.component.Boton();

    public Button getBotonRetornar1() {
        return botonRetornar1;
    }

    public void setBotonRetornar1(Button component) {
        this.botonRetornar1 = component;
    }

    private ImageHyperlink imageHyperlink1 = new com.egt.core.jsf.component.Hipervinculo();

    public ImageHyperlink getImageHyperlink1() {
        return imageHyperlink1;
    }

    public void setImageHyperlink1(ImageHyperlink component) {
        this.imageHyperlink1 = component;
    }

    private OpcionMenuCachedRowSetDataProvider3 opcionMenuDataProvider = new OpcionMenuCachedRowSetDataProvider3();

    public OpcionMenuCachedRowSetDataProvider3 getOpcionMenuDataProvider() {
        return opcionMenuDataProvider;
    }

    public void setOpcionMenuDataProvider(OpcionMenuCachedRowSetDataProvider3 crsdp) {
        this.opcionMenuDataProvider = crsdp;
    }

    private AplicacionCachedRowSetDataProvider2 aplicacionReferenceDataProvider = new AplicacionCachedRowSetDataProvider2();

    public AplicacionCachedRowSetDataProvider2 getAplicacionReferenceDataProvider() {
        return aplicacionReferenceDataProvider;
    }

    public void setAplicacionReferenceDataProvider(AplicacionCachedRowSetDataProvider2 crsdp) {
        this.aplicacionReferenceDataProvider = crsdp;
    }

    private PaginaCachedRowSetDataProvider2 paginaReferenceDataProvider = new PaginaCachedRowSetDataProvider2();

    public PaginaCachedRowSetDataProvider2 getPaginaReferenceDataProvider() {
        return paginaReferenceDataProvider;
    }

    public void setPaginaReferenceDataProvider(PaginaCachedRowSetDataProvider2 crsdp) {
        this.paginaReferenceDataProvider = crsdp;
    }

    private OpcionMenuCachedRowSetDataProvider3 opcionMenuReferenceDataProvider = new OpcionMenuCachedRowSetDataProvider3();

    public OpcionMenuCachedRowSetDataProvider3 getOpcionMenuReferenceDataProvider() {
        return opcionMenuReferenceDataProvider;
    }

    public void setOpcionMenuReferenceDataProvider(OpcionMenuCachedRowSetDataProvider3 crsdp) {
        this.opcionMenuReferenceDataProvider = crsdp;
    }

    // </editor-fold>
/**/
    public OpcionMenu3() {
    }

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para el manejo de eventos de la pagina: init, preprocess, prerender y destroy">
    @Override
    @PostConstruct
    public void init() {
        // Realizar iniciaciones heredadas de la superclase
        super.init();
        // Realizar iniciaciones que deben finalizar **antes** de que se inicien los componentes administrados
        this.preiniciar();
        // <editor-fold defaultstate="collapsed" desc="Inicio de componentes administrados por el programa">
        // Iniciar componentes administrados automaticamente
        // *Nota* - esta logica NO debe modificarse
        try {
            _init();
        } catch (Exception e) {
            log(com.egt.core.util.Bundle.getString("bean.initialization.error"), e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }
        // </editor-fold>
        // Realizar iniciaciones que deben finalizar *despues* de que se inicien los componentes administrados
        this.iniciar();
    }

    @Override
    public void preprocess() {
        this.preprocesar();
    }

    @Override
    public void prerender() {
        this.prepresentar();
    }

    @Override
    @PreDestroy
    public void destroy() {
        opcionMenuDataProvider.close();
        aplicacionReferenceDataProvider.close();
        paginaReferenceDataProvider.close();
        opcionMenuReferenceDataProvider.close();
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="propiedades estandar para el manejo de los beans de contexto: request, session y application">
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="implementacion estandar de propiedades y metodos de la interfaz PaginaAbstracta">
    @Override
    public FacesContext getFacesContext() {
        return super.getFacesContext();
    }

    @Override
    public Object getBean(String name) {
        return super.getBean(name);
    }

    @Override
    public boolean isPostBack() {
        return super.isPostBack();
    }

    @Override
    public void erase() {
        super.erase();
    }

    @Override
    public void info(String summary) {
        super.info(summary);
    }

    @Override
    public void warn(String summary) {
        super.warn(summary);
    }

    @Override
    public void error(String summary) {
        super.error(summary);
    }

    @Override
    public void fatal(String summary) {
        super.fatal(summary);
    }

    @Override
    public void log(String message) {
        super.log(message);
    }

    @Override
    public void log(String message, Throwable throwable) {
        super.log(message, throwable);
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="implementacion estandar de propiedades de la interfaz PaginaBasica">
    @Override
    public ContextoPeticionEstandar getContextoPeticion() {
        return (ContextoPeticionEstandar) this.getRequestBean1().getContextoPeticion();
    }

    @Override
    public ContextoSesionEstandar getContextoSesion() {
        return (ContextoSesionEstandar) this.getSessionBean1().getContextoSesion();
    }

    @Override
    public ContextoAplicacionEstandar getContextoAplicacion() {
        return (ContextoAplicacionEstandar) this.getApplicationBean1().getContextoAplicacion();
    }

    @Override
    public String getEtiquetaMigasPan() {
        return ETIQUETA_MIGAS_PAN;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="implementacion estandar de propiedades de la interfaz PaginaConsulta">
    @Override
    public boolean isConsultaPendiente() {
        return this.getGestor().isConsultaPendiente();
    }

    @Override
    public void setConsultaPendiente(boolean consultaPendiente) {
        this.getGestor().setConsultaPendiente(consultaPendiente);
    }

    @Override
    public String getEtiquetaClaseDetalle() {
        return ETIQUETA_CLASE_DETALLE;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="implementacion estandar de propiedades de la interfaz PaginaConsultaConMaestro">
    public String getEtiquetaClaseMaestro() {
        return ETIQUETA_CLASE_MAESTRO;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="implementacion estandar de propiedades de la interfaz PaginaConsultaConArbol">
    @Override
    public Integer getOpcionZumSeleccionada() {
        return this.getRecursoDataProvider().getOpcionZumNodo() == null
                ? null : this.getRecursoDataProvider().getOpcionZumNodo().intValue();
    }

    @Override
    public void setOpcionZumSeleccionada(Integer opcionZumSeleccionada) {
        EnumOpcionZumNodo opcion = opcionZumSeleccionada == null ? null : EnumOpcionZumNodo.valueOf(opcionZumSeleccionada);
        this.getRecursoDataProvider().setOpcionZumNodo(opcion);
    }

    @Override
    public Object getColumnaEtiqueta() {
        return EnumColumnaEtiqueta.AMBAS_COLUMNAS;
    }

    @Override
    public String accionEscogerNodo() {
        this.getGestor().escoger();
        return null;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="propiedad gestor de pagina de actualizacion con arbol">
    private GestorPaginaActualizacionConArbol gestor = new GestorPaginaActualizacionConArbol(this);

    @Override
    public GestorPaginaActualizacionConArbol getGestor() {
        return this.gestor;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="propiedades y metodos estandar: preiniciar, iniciar, preprocesar, prepresentar, consultar, posconsultar, posrefrescar">
    private final static String ETIQUETA_MIGAS_PAN = Bundle.getString("OpcionMenu3_ETIQUETA_MIGAS_PAN");

    private final static String ETIQUETA_CLASE_DETALLE = Bundle.getString("OpcionMenu3_ETIQUETA_CLASE_DETALLE");

    private final static String ETIQUETA_CLASE_MAESTRO = Bundle.getString("OpcionMenu3_ETIQUETA_CLASE_MAESTRO");

    @Override
    public RecursoCachedRowSetDataProvider getRecursoDataProvider() {
        return this.getOpcionMenuDataProvider();
    }

    @Override
    public long getFuncionConsultarRecurso() {
        return OpcionMenuCachedRowSetDataProvider3.FUNCION_CONSULTAR_OPCION_MENU;
    }

    @Override
    public long getFuncionCrearRecurso() {
        return OpcionMenuCachedRowSetDataProvider3.FUNCION_CREAR_OPCION_MENU;
    }

    @Override
    public long getFuncionModificarRecurso() {
        return OpcionMenuCachedRowSetDataProvider3.FUNCION_MODIFICAR_OPCION_MENU;
    }

    @Override
    public long getFuncionEliminarRecurso() {
        return OpcionMenuCachedRowSetDataProvider3.FUNCION_ELIMINAR_OPCION_MENU;
    }

    @Override
    public Option[] getOpcionesListaFuncionEdicion() {
        return new Option[]{ //
                // Al implementar PaginaActualizacionConEdicionMultiple esta lista deberia incluir al menos 2 funciones
                // new Option("", bean.getGestor().getEtiquetaSeleccioneUnaOpcionListaFuncionEdicion()),
                // new Option(OpcionMenuCachedRowSetDataProvider3.FUNCION_MODIFICAR_OPCION_MENU, BundleWebui.getString("editar")),
                // new Option(OpcionMenuCachedRowSetDataProvider3.FUNCION_DESACTIVAR_OPCION_MENU, BundleWebui.getString("desactivar")),
                // new Option(OpcionMenuCachedRowSetDataProvider3.FUNCION_REACTIVAR_OPCION_MENU, BundleWebui.getString("reactivar"))
                };
    }

    @Override
    public Option[] getOpcionesListaFuncionAccion() {
//      Al implementar PaginaActualizacionConAccionMultiple esta lista deberia incluir al menos 2 funciones; por ejemplo:
//      Option[] opciones = new Option[]{
//          new Option("", bean.getGestor().getEtiquetaSeleccioneUnaOpcionListaFuncionAccion()),
//          new Option(OpcionMenuCachedRowSetDataProvider3.FUNCION_PROCESAR_OPCION_MENU, BundleWebui.getString("procesar"))
//      };
//      return this.getGestor().getOpcionesListaFuncionAccionAutorizadas(opciones);
        return new Option[]{};
    }

    public RecursoCachedRowSetDataProvider getRecursoMaestroDataProvider() {
        return null;
    }

    public String getColumnaIdentificacionRecursoMaestro() {
        return null;
    }

    @Override
    public String getVinculoPaginaConsultaConTabla() {
        return "tabla";
    }

    @Override
    public String getVinculoPaginaConsultaDetalle() {
        return "detalle";
    }

    public String getScriptAbrirVentanaVerDetalle() {
        return null;
    }

    protected void preiniciar() {
        /*
         * Esta funcion debe ejecutarse al comienzo de init(),
         * *antes* de que se inicien los componentes administrados.
         */
        this.getGestor().preiniciar();
    }

    protected void iniciar() {
        /*
         * Esta funcion debe ejecutarse al final de init(),
         * *despues* de que se inicien los componentes administrados.
         */
        this.getGestor().iniciar();
    }

    protected void preprocesar() {
        /*
         * Esta funcion debe ejecutarse al final de preprocess().
         */
        this.getGestor().preprocesar();
    }

    protected void prepresentar() {
        /*
         * Esta funcion debe ejecutarse al final de prerender().
         */
        this.getGestor().prepresentar();
    }

    @Override
    public void consultar() {
        FiltroBusqueda filtro = this.getGestor().getFiltroBusqueda(
                this.getContextoPeticion().getFiltroFuncionSelect(),
                this.getContextoPeticion().getCodigoFuncionSelect(),
                this.getContextoPeticion().getNombreFuncionSelect());

        this.consultar(filtro);
    }

    public void consultar(Long filtro) {
        try {
            this.getOpcionMenuDataProvider().setLimiteFilasFuncionSelect(500);
            this.getOpcionMenuDataProvider().consultarOpcionMenu(filtro);
        } catch (Exception ex) {
            this.getGestor().handle(ex);
        } finally {
            this.setConsultaPendiente(false);
        }
    }

    public void consultar(FiltroBusqueda filtro) {
        try {
            this.getOpcionMenuDataProvider().setLimiteFilasFuncionSelect(500);
            this.getOpcionMenuDataProvider().consultarOpcionMenu(filtro);
        } catch (Exception ex) {
            this.getGestor().handle(ex);
        } finally {
            this.setConsultaPendiente(false);
        }
    }

    @Override
    public void posconsultar() {
    /*
     * ejecutar las funciones de consulta de los data provider "secundarios" de la pagina,
     * tales como, por ejemplo, los data provider de las listas desplegables y otros componentes,
     * que NO correspondan a recursos del tipo "Gestión Manual" (NO modificables por el usuario).
     */

    /*
     * invocar posrefrescar() para consultar los recursos del tipo "Gestión Manual".
     */
    // this.posrefrescar();
    }

    @Override
    public void posrefrescar() {
    /*
     * ejecutar las funciones de consulta de los data provider "secundarios" de la pagina,
     * tales como, por ejemplo, los data provider de las listas desplegables y otros componentes,
     * que correspondan a recursos del tipo "Gestión Manual" (modificables por el usuario).
     */
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos estandar para refrescar, agregar, editar, deshacer y eliminar de la plantilla #3">
    public String botonAplicarZum1_action() {
        this.getGestor().escoger();
        this.getGestor().zumNodo();
        return null;
    }

    public String botonQuitarZum1_action() {
        this.getGestor().escoger();
        this.getGestor().zumTodo();
        return null;
    }

    public String botonAgregar1_action() {
        if (this.getGestor().agregar()) {
            return this.getGestor().accionVincularDetalle();
        }
        return null;
    }

    public void listaFuncionEdicion1_processValueChange(ValueChangeEvent event) {
        if (this.getListaFuncionEdicion1().getSelected() instanceof Long) {
            this.getGestor().setFuncionEdicionSeleccionada((Long) this.getListaFuncionEdicion1().getSelected());
        }
        NavigationHandler navigator = this.getApplication().getNavigationHandler();
        navigator.handleNavigation(this.getFacesContext(), null, this.getGestor().accionVincularDetalle());
    }

    public String botonEditar1_action() {
        if (this.getGestor().editar()) {
            return this.getGestor().accionVincularDetalle();
        }
        return null;
    }

    public String botonEliminar1_action() {
        this.getGestor().eliminar();
        return null;
    }

    public String botonAplicar1_action() {
        this.getGestor().aplicar();
        return null;
    }

    public String botonDeshacer1_action() {
        this.getGestor().deshacer();
        return null;
    }

    public String botonConfirmar1_action() {
        this.getGestor().confirmar();
        return null;
    }

    public String botonProcesar1_action() {
//      this.getAsistente().procesar();
        return null;
    }

    public String botonDescartar1_action() {
        this.getGestor().descartar();
        return null;
    }

    public String botonRefrescar1_action() {
        this.getGestor().refrescar();
        return null;
    }

    public String botonReconsultar1_action() {
        this.getGestor().reconsultar();
        return null;
    }

    public String botonRetornar1_action() {
        this.getGestor().retornar();
        return null;
    }
    // </editor-fold>

    // <editor-fold defaultstate="collapsed" desc="metodos para establecer las acciones de los hipervinculos">
    public String imageHyperlink1_action() {
        if (this.getGestor().vincular()) {
        } else {
            return null;
        }
        return "case1";
    }

    // </editor-fold>
/**/
    String footnote = "a partir de aqui coloque el codigo especifico de la pagina";
}
